chrome-render
High-performance and universal server render base on Headless chrome, render any SPA(render data in browser) in server for SEO or other optimizes.
Use
-
install it from npm by npm i chrome-render
-
new a ChromeRender
then use it to render
a web page, a ChromeRender
means a chrome.
const ChromeRender = require('chrome-render');
ChromeRender.new({}).then(async(chromeRender)=>{
const htmlString = await chromeRender.render({
url: 'http://qq.com',
});
});
A chromeRender
instance can call render
multi-times and concurrent for high frequency use case.
chromeRender
will manage a tabs pool to render
multi-pages concurrent.
- After you don't need chromeRender anymore, you should call
await chromeRender.destroyRender()
to kill chrome add release all resource.
see more demo in unit test
API
ChromeRender.new()
method support options:
maxTab
: number
max tab chrome will open to render pages, default is no limit, maxTab
used to avoid open to many tab lead to chrome crash. ChromeRender
will create a tab poll to reuse tab for performance improve and resource reduce as open and close tab in chrome require time, like database connection poll.chromeRunnerOptions
: object
same as chrome-runner's options, can config chrome's startup options, detail see chrome-runner options
chromeRender.render()
method support options:
url
: string
is required, web page's URLcookies
: object {cookieName:cookieValue}
is an option param. set HTTP cookies when request web pageheaders
: object {headerName:headerValue}
is an option param. add HTTP headers when request web pageuseReady
: boolean
whether use window.isPageReady=1
to notify chrome-render page is ready. default is false chrome-render use domContentEventFired
as page has ready.script
: string
is an option param. inject script source to evaluate when page on loadrenderTimeout
: number
in ms, render()
will throw error if html string can't be resolved after renderTimeout
, default is 5000ms.deviceMetricsOverride
: object
overrides the values of device screen dimensions for responsive websites, detail use see hereclearTab
: boolean
if true
after render chrome instance will navigate to about:blank
to free resources. default is true
. setting to false
may increase page load speed when rendering the same website.
all request from chrome-render will take with a HTTP header x-chrome-render:${version}
Friends